package com.tedu.day02.oop;

/**
 * This关键字---super关键字---使用完全一致
 * 不需要继承---当前类，指代当前
 * 使用方式：调用当前类的属性，方法，构造器
 * this.属性   【当前类的属性赋值】
 *             出现构造方法中
 *             区别当前类的属性与参数“名称” 一致
 *             this.方法
 *             this()     多个有参构造器
 *
 * 笔试题：this和super的区别？
 *          this   调用本类的属性或者方法以及构造器
 *          super  调用父类的属性或者方法以及构造器
 *          this(参数)   可调用本类其他构造器（构造器首行）
 *          super(参数)   调用父类其他构造器（构造器首行）
 *                    有继承关系，在子类构造器中默认存在 super（）
 *     this()与super()不可以同时出现在对象的首行
 */
public class This关键字 {
    int i; //属性---很少赋值【声明未赋值】---构造器或者方法中赋值
    int j; //属性---很少赋值【声明未赋值】---构造器或者方法中赋值

    public This关键字(int i, int j) {
        this.i = i;
        this.j = j;
    }

    //构造器：有参    需求：创建1个参数对象，给i跟j赋值【跟一样super()】
    public This关键字(int i) {
        this(3,4); //调用其本类其他构造器===传参
        this.i = i;   //常见：this.属性【当前类下属性】：=参数
                      //赋值 this.i=1;
    }
//方法---this.方法
    public void testI(){
        System.out.println("我是I");
    }
    public void testJ(){//调取---输出：我是I 我是J
        this.testI();
        System.out.println("我是J");
    }
    public static void main(String[] args) {
        //System.out.println(new This关键字(1).i);
        new This关键字(1).testJ();//方法有输出语句
    }
}
